import request from '@/utils/request'

// 低代码页面相关API

/**
 * 保存页面配置
 * @param {Object} pageData - 页面数据
 */
export function savePage(pageData) {
  return request({
    url: '/api/lowcode/page/save',
    method: 'post',
    data: pageData
  })
}

/**
 * 获取页面列表
 * @param {Object} params - 查询参数
 */
export function getPageList(params) {
  return request({
    url: '/api/lowcode/page/list',
    method: 'get',
    params
  })
}

/**
 * 根据ID获取页面详情
 * @param {String} id - 页面ID
 */
export function getPageById(id) {
  return request({
    url: `/api/lowcode/page/${id}`,
    method: 'get'
  })
}

/**
 * 更新页面配置
 * @param {String} id - 页面ID
 * @param {Object} pageData - 页面数据
 */
export function updatePage(id, pageData) {
  return request({
    url: `/api/lowcode/page/${id}`,
    method: 'put',
    data: pageData
  })
}

/**
 * 删除页面
 * @param {String} id - 页面ID
 */
export function deletePage(id) {
  return request({
    url: `/api/lowcode/page/${id}`,
    method: 'delete'
  })
}

/**
 * 发布页面
 * @param {String} id - 页面ID
 */
export function publishPage(id) {
  return request({
    url: `/api/lowcode/page/${id}/publish`,
    method: 'post'
  })
}

/**
 * 获取页面模板列表
 */
export function getTemplateList() {
  return request({
    url: '/api/lowcode/template/list',
    method: 'get'
  })
}

/**
 * 根据模板创建页面
 * @param {String} templateId - 模板ID
 * @param {Object} pageInfo - 页面基本信息
 */
export function createPageFromTemplate(templateId, pageInfo) {
  return request({
    url: '/api/lowcode/page/create-from-template',
    method: 'post',
    data: {
      templateId,
      ...pageInfo
    }
  })
}

/**
 * 导出页面为静态文件
 * @param {String} id - 页面ID
 * @param {String} format - 导出格式 (html, vue, react)
 */
export function exportPage(id, format = 'html') {
  return request({
    url: `/api/lowcode/page/${id}/export`,
    method: 'get',
    params: { format },
    responseType: 'blob'
  })
}

/**
 * 预览页面
 * @param {String} id - 页面ID
 */
export function previewPage(id) {
  return request({
    url: `/api/lowcode/page/${id}/preview`,
    method: 'get'
  })
}